home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / vrtlr101.lha / ZPoint / Start_Verteiler.zprx < prev   
Text File  |  1995-09-07  |  12KB  |  313 lines

  1. /*
  2.     $VER: Start_Verteiler.zprx V1.01 (5.9.95) Copyright (c) Nils Goers
  3.               Verteiler Copyright (c) 1995 by Thomas Eicher
  4.  
  5.  
  6.    FUNKTIONSBESCHREIBUNG:
  7.  
  8.     Dieses Skript wurde speziell fuer das Programm VerteilerVerwaltung,
  9.     kurz  VV,  zwecks  Anbindung an Zodiac's Point entwickelt.  Dieses
  10.     Skript   dient   lediglich  der  Auswertung-  und  Versendung  von
  11.     Nachrichten an  mehrere  Empfaenger, die  mittels  `VV'  ausgewaehlt
  12.     wurden.
  13.  
  14.  
  15.    BENUTZUNG:
  16.  
  17.     Schreiben  und  versenden Sie Ihre Nachrichten wie bisher.  Tragen
  18.     Sie  aber  anstelle  aller  Empfaenger,  an die Sie diese Nachricht
  19.     senden  moechten, lediglich einen ein. Hierbei hat es sich bewaehrt,
  20.     die  eigenen Adresse oder J.Random@meine.Domain einzusetzen.  Dies
  21.     hat  den Zweck, falls Sie vergessen sollten die Adresse zu aendern,
  22.     damit  die  Nachricht  nicht  ungewollt  in  der  ganzen  Welt auf
  23.     wanderschaft geht.
  24.     Begeben  Sie  sich  dann  in  das  Spool-Brett,  waehlen  dort  die
  25.     entsprechende  Nachricht  aus und starten Sie dieses ARexx-Skript.
  26.     Es wird  dann das Programm `VV' gestartet, wo Sie ganz bequem Ihre
  27.     Verteilerlisten  erstellen, editieren, loeschen und  zum  versenden
  28.     von Nachrichten bereitstellen koennen.
  29.     Start_Verteiler.zprx  wertet  dann  zum einen die Orignalnachricht
  30.     aus,  zum anderen generiert das Skript eine neue Nachricht.  Diese
  31.     neue  Nachricht  weist  natuerlich die selben Attribute vor wie die
  32.     Originalnachricht.   Zusaetzlich  werden dann zu der Nachricht, die
  33.     verschiedenen Empfaenger beigefuegt.
  34.  
  35.  
  36.    INSTALLATION:
  37.  
  38.     Kopieren    Sie    bitte    das   Hauptprogramm,   'VV'   in   das
  39.     Tools-Verzeichnis  von Zodiac's Point.  Dieses ARexx-Skript gehoert
  40.     in das Rexx-Verzeichnis von Zodiac's Point.
  41.  
  42.     Um  das  Programm  nun  ueber eine Funktionstaste starten zu koennen
  43.     muessen Sie folgenden Eintrag in die Datei `fkeys.zp' hinzufuegen.
  44.     F1:SYS:Rexxc/RX ZPOINT:Rexx/Start_Verteiler.zprx %s
  45.  
  46.     Alternativ hierzu haben Sie aber auch die Moeglichkeit das Programm
  47.     aus dem Pulldown-Menu aufzurufen.  Dazu muessen Sie lediglich einen
  48.     neuen Eintrag in die Datei `usermenus.zp' machen:
  49.     *Nachrichtenverteiler
  50.     Sys:Rexxc/RX ZPoint:Rexx/Start_Verteiler.zprx %s
  51.  
  52.  
  53.     Sie erreichen die Autoren wie folgt:
  54.  
  55.        t.eicher@hsp.zer.de
  56.        N.Goers@Art-Line.Art-Line.de
  57.  
  58.    Das Programm Verteiler, welches mit diesem Skript gestartet wird,
  59.    benoetigt die "triton.library" >=V1.2
  60.    Triton is (C) by Stefan Zeiger <s.zeiger@laren.rhein-main.de>  */
  61.  
  62. /*----------------------------------------------------------------
  63.   -Ab hier koennen Sie das Skript nach Ihren Beduerfnissen anpassen-
  64.   ----------------------------------------------------------------*/
  65. /* wo befindet sich das Hauptprogramm ?? */
  66. Verteiler.main = "source:vv/vv"
  67.  
  68. /*----------------------------------------------------------------*/
  69. /* wo befindet sich die Database
  70.            (default: progdir:verteiler.database)                  */
  71. DataBase = "progdir:verteiler.database"
  72.  
  73. /*----------------------------------------------------------------*/
  74. /* wo ist die Datei mit den Empfaengern (Verteilerliste)?          */
  75. RCVFILE.main   = "t:RCVFILE"
  76. /*----------------------------------------------------------------*/
  77. /* Dieser "Domain"-Eintrag in der Alias.zp Datei dient dem Skript
  78.    zur Erkennung das Sie den "Distribution-Modus" von Verteiler
  79.    nutzen moechten (siehe Anleitung!)                              */
  80. Verteilerkennung = "@Verteiler"
  81.  
  82. /*----------------------------------------------------------------*/
  83. /* zum Auslagern evtl. Daten (Binaer- und oder Textnachrichten)    */
  84. Datei.Tmp      = "t:Out.tmp"
  85.  
  86. /*----------------------------------------------------------------*/
  87. /* Erlaubte Optionen:
  88. PERSONAL unterbindet, dass im Kopf der Nachricht vermerkt wird, wer
  89.          alles Kopien dieser Nachricht erhalten hat.
  90. ARCHIVE  Nachricht versenden und im Nachrichtenarchiv speichern.
  91. COOKIE   Cookie anhaengen (nur bei Textnachrichten).
  92. Beispiele:
  93. wopts         = 'PERSONAL '
  94.                          ~Bitte beachten Sie dieses Freizeichen!
  95. wopts         = 'COOKIE ARCHIVE '
  96. */
  97. wopts          = ''
  98.  
  99. /*----------------------------------------------------------------*/
  100. /* Originalnachricht wird geloeschen ??
  101.    1 = mit Sicherheitsabfrage
  102.    0 = ohne Sicherheitsabfrage                                    */
  103. DelImmer       = 0
  104.  
  105. /*----------------------------------------------------------------*/
  106. /* In welcher Sprache moechten Sie arbeiten ??
  107.    Moeglichkeiten: deutsch
  108.                   english                                         */
  109. Sprache        = "deutsch"
  110. /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  111.  *      Bitte geben Sie hier ihre Praeferenzen ein !                *
  112.  *******************************************************************/
  113.  
  114. /*******************************************************************
  115.  *      Bitte unterhalb dieser Zeile nichts mehr veraendern!        *
  116.  *******************************************************************/
  117.  
  118. NL             = '0a'x
  119. None           = "-NONE-"
  120.  
  121. Bezug          = "BEZ"
  122. Crypto         = "CRYPT"
  123. Diskussion     = "Diskussion-in"
  124. Empfangsbest   = "EB"
  125. PGPSignatur    = "PGP-SIG"
  126. Anf            = '"'
  127. Space          = ' '
  128.  
  129. /* Hier sind die Texte in den unterschiedlichen Sprachen.  Falls
  130.    Sie diese Texte in eine andere Sprache uebersetzen sollten, dann
  131.    senden Sie mir die uebersetzten Texte doch bitte zu. */
  132. deutsch.text0  = '"Verteiler laeuft!"'
  133. english.text0  = '"Verteiler is running!"'
  134. deutsch.text1  = "Bitte begeben Sie sich"NL,
  135.                  "in das Spool-Brett!"
  136. english.text1  = "Please go into the Spool-Area"
  137. deutsch.text2  = "Empfangsbestaetigungen und Kontrollnachrichten"NL,
  138.                  "koennen nicht bearbeitet werden!"
  139. english.text2  = "receive receptions and controlmessages"NL,
  140.                  "can not be handled!"
  141. deutsch.text3  = "Fehler beim Start von Verteiler!"
  142. english.text3  = "error while opening 'Verteiler!'"
  143. deutsch.text4  = "Sie haben abgebrochen. Die Nachricht wird"NL,
  144.                  "weiterhin nur an den Originalempfaenger gesendet."
  145. english.text4  = "You have canceled. The message will"NL,
  146.                  "be send to the main receiver, only."
  147. deutsch.text5  = "Fehler beim Speichern!"
  148. english.text5  = "error while saving!"
  149. deutsch.text6  = "Kann Nachricht nicht verschicken!"
  150. english.text6  = "Couln't send message!"
  151. deutsch.text7  = "Nachricht wurde verschickt."
  152. english.text7  = "Message is on the way, now."
  153. deutsch.text8  = "Soll die Ursprungsnachricht geloescht werden?"
  154. english.text8  = "Shall I delete the original message?"
  155. deutsch.text9  = "kodierte Nachrichten koennen z.Zt. nicht"NL,
  156.                  "bearbeitet werden!"
  157. english.text9  = "At the moment it's not possible to handle"NL,
  158.                  "crypted messages!"
  159. deutsch.text10 = "Bitte die erneute QPC-Passwortabfrage"NL,
  160.                  "abbrechen, bzw. nur RETURN druecken!"
  161. english.text10 = "Please cancel the upcoming QPC-passwortrequester",
  162.                  "or simply press return, ONLY!"
  163.  
  164. OPTIONS RESULTS
  165.  
  166. /* ------ von welchem ZP Port wurde das Script aufgerufen ? ------ */
  167. PARSE ARG zpPort
  168. IF zpPort == "" THEN
  169.    zpPort = "ZPoint"
  170. ADDRESS VALUE zpPort
  171.  
  172. /* ------------- Dieses Skript laeuft erst ab V37.191 ------------- */
  173. WHICHVERSION
  174. IF RESULT < "37.191" THEN DO
  175.  REQUESTNOTIFY "Dieses Skript benoetigt mind. die Zodiac's Point 37.191 (15.5.95)"
  176.  EXIT
  177. END
  178.  
  179.  
  180. /* --- Dieses Skript darf nur im Spool-Brett ausgefuehrt werden --- */
  181. WHICHLEVEL
  182.  IF Result ~= "BOARD" then
  183.  DO
  184.   Text1 = VALUE(sprache||.text1); REQUESTNOTIFY Text1; EXIT
  185.  END
  186.  
  187.   BOARDINFO LABEL; BOARDLABEL=Result
  188. IF INDEX(Boardlabel,'(Spool') == 0 THEN
  189. DO
  190.   Text1 = VALUE(sprache||.text1); REQUESTNOTIFY Text1; EXIT
  191. END
  192.  
  193. /******************************
  194.  * hier ist das Hauptprogramm *
  195.  ******************************/
  196. _Main:
  197.  
  198. MESSAGEINFO STATUS
  199. IF RESULT == "CTL,EB" THEN DO /* Kontrollnachricht! */
  200.     Text1 = VALUE(sprache||.text2); REQUESTNOTIFY Text1; EXIT
  201. END
  202.  
  203. /* Ist die Nachricht kodiert worden (QPC bzw. PGP) ? */
  204. FINDHEADER Crypto
  205. IF RESULT ~= None THEN DO
  206.  IF RESULT == "QPC" THEN DO
  207.   Text1 = VALUE(sprache||.text10); REQUESTNOTIFY Text1
  208.   CALL _SendMails
  209.   END
  210.   Text1 = VALUE(sprache||.text9); REQUESTNOTIFY Text1; EXIT
  211. END
  212.  
  213. _SendMails:
  214. text1 = VALUE(sprache||.text0)
  215. "guilock text="text1
  216.  
  217. MESSAGEINFO RECEIVER
  218. ReceiverName=RESULT
  219. Receiver.bak=RESULT
  220. IF ~EXISTS(RCVFile.main||zpPort) THEN ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:'
  221.  
  222. Receiver.bak = UPPER(receiver.bak)
  223. Verteilerkennung = UPPER(Verteilerkennung)
  224. SELECT
  225.  WHEN LASTPOS(Verteilerkennung,Receiver.bak) ~= 0 THEN DO
  226.   Receiver=INDEX(Receivername,"@"); Receiver=LEFT(Receivername,Receiver-1)
  227.                                 ADDRESS COMMAND Verteiler.main 'DB='Database,
  228.                                                                'INTO='RCVFILE.main||zpPort,
  229.                                                                'PB='zpPort,
  230.                                                                'FOR='Receiver
  231.  END
  232.  OTHERWISE
  233.                                 ADDRESS COMMAND Verteiler.main 'DB='Database,
  234.                                                                'INTO='RCVFILE.main||zpPort,
  235.                                                                'PB='zpPort
  236. END
  237.  
  238. IF (RC) ~= 0 THEN DO           /* Fehler beim oeffnen von Verteiler */
  239.   Text1 = VALUE(sprache||.text3); REQUESTNOTIFY Text1; EXIT
  240. END; ELSE
  241.  
  242. IF ~EXISTS(RCVFile.main||zpPort) THEN DO
  243.     Text1 = VALUE(sprache||.text4); REQUESTNOTIFY Text1
  244. EXIT; END
  245.  
  246. MESSAGEINFO POSITION /* an der wievielten Position befindet sich die
  247. MailPosition=RESULT     Originalnachricht ? */
  248.  
  249. /*  Es  wird  nach Empfaenger, Betreff, Diskussion in, PGP-Signatur und
  250.     Empfangsbestaetigung gesucht. Es wird lediglich bis zum Textkoerper
  251.     durchsucht */
  252.  
  253. MESSAGEINFO FULLSUBJECT
  254. SubjectName=RESULT
  255.  
  256.  FINDHEADER Diskussion
  257.   IF RESULT ~= None THEN
  258.   wopts = wopts||Space||'FOLLOWUP '||Anf||RESULT||Anf
  259.  
  260.  FINDHEADER Empfangsbest
  261.   IF RESULT ~= None THEN
  262.   wopts = wopts||Space||'CONFIRM'
  263.  
  264.  FINDHEADER PGPSIGNATUR
  265.   IF RESULT ~= None THEN
  266.   wopts = wopts||Space||'PGPSIG'
  267.  
  268.  FINDHEADER ALL Bezug
  269.   IF RESULT ~= None THEN
  270.   wopts = wopts||Space||'REFERENCES '||Anf||RESULT||Anf
  271.  
  272. MESSAGEINFO TYPE
  273.  IF RESULT == "BINARY" THEN wopts = wopts||space||'BINARY'
  274.  
  275. SAVEMESSAGEBODY Datei.tmp||zpPort
  276. IF (RC) == 0 THEN
  277.  DO
  278.   Text1 = VALUE(sprache||.text5); REQUESTNOTIFY Text1
  279.   CALL _DeleteTemps
  280.  END
  281.  
  282.  WRITEMESSAGE Datei.tmp||zpPort,
  283.                         'RECEIVER' ReceiverName,
  284.                         'SUBJECT'  Anf||SubjectName||Anf,
  285.                         'RCVFILE'  RCVFILE.main||zpPort,
  286.                          wopts
  287. id = RESULT /* Hat das versenden geklappt ? */
  288. IF (id = '') THEN DO               /* Hups! Fehler! */
  289.     Text1 = VALUE(sprache||.text6); REQUESTNOTIFY Text1
  290.     CALL _DeleteTemps
  291. END
  292. ELSE                               /* Alles klar! */
  293.     Text1 = VALUE(sprache||.text7); REQUESTNOTIFY Text1
  294.  
  295. IF DelImmer ~= 0 THEN              /* Soll nachgefragt werden? */
  296.    DO                  /* Soll die Nachricht geloescht werden ? */
  297.     Text1 = VALUE(sprache||.text8); REQUESTRESPONSE Text1
  298.    END
  299.     IF RC = 1 THEN     /* Wenn 1, dann Nachricht loeschen! */
  300.      DO
  301.        JUMPTOMESSAGE MailPosition; DELETE ONE; DOWN
  302.        CALL _DeleteTemps
  303.      END
  304.  
  305. _DeleteTemps:
  306.      ADDRESS COMMAND 'delete' RCVFILE.main||zpPort '>NIL:'
  307.      ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:'
  308.      guilock off              /* Die GUI wieder freigeben! */
  309.     EXIT
  310. /* EOS */
  311.  
  312.  
  313.